package com.zyz.controller;

import org.springframework.web.bind.annotation.*;

// @Controller// 这表明这是一个控制层的组件操作
// @Controller 是 Spring MVC 提供的一个注解，用于将该类标识为 控制器组件（Controller），即负责接收和处理前端发送的请求。
// 被 Spring 容器扫描后，这个类会被自动注册到 Spring 上下文中，成为一个 Spring Bean
// 与 @RestController 不同，它的返回值通常是一个 视图名称，用于跳转页面，而不是返回 JSON 数据。
/*
* | 注解                | 用途             | 返回值默认类型         |
| ----------------- | -------------- | --------------- |
| `@Controller`     | 用于返回页面视图       | 视图名（例如 HTML 页面） |
| `@RestController` | 用于返回数据（如 JSON） | 数据内容            |
* */
@RestController
@RequestMapping("/hello")
public class HelloController {
    /*
   * 作用：
       这是一个请求映射注解，用于定义请求路径和该方法之间的映射关系。
       当用户通过浏览器访问 http://localhost:8080/hello/test，Spring 就会调用 page() 方法。
   可用属性说明：
       value 或 path：指定 URL 路径，例如 /page；
       method：指定请求方法，如 RequestMethod.GET、RequestMethod.POST 等；
       也可以使用简化版注解如 @GetMapping、@PostMapping 替代
   * */
    // 在 Spring 中，@RequestMapping 注解除了可以设置请求路径（value 或 path）外，还可以通过 method 属性指定请求方法（如 GET、POST、PUT、DELETE 等）。
    // 语法格式:@RequestMapping(value = "/路径", method = RequestMethod.请求方式)
    @RequestMapping("/test")
    public String hello() {
        return "hello";// 如果使用的是Controller，则返回的是页面视图名称，如hello.html
        // 如果使用的是RestController，则返回的是数据内容，如JSON数据
    }

    // 如下开始实现四种请求的方式
    // 处理GET请求
    @RequestMapping(value = "/get", method = RequestMethod.GET)
    public String get() {
        System.out.println("执行了Get的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "get的方法的请求";
    }

    // 处理POST请求
    @RequestMapping(value = "/post", method = RequestMethod.POST)
    public String post() {
        System.out.println("执行了Post的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "post的方法的请求";
    }

    // 处理PUT请求
    @RequestMapping(value = "/put", method = RequestMethod.PUT)
    public String put() {
        System.out.println("执行了Put的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "put的方法的请求";
    }

    // 处理DELETE请求
    @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
    public String delete() {
        System.out.println("执行了Delete的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "delete的方法的请求";
    }

    // Get的方法
    @GetMapping("/get1")
    public String get1() {
        System.out.println("执行了Get1的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "get1的方法的请求";
    }

    //Post的方法
    @PostMapping("/post1")
    public String post1() {
        System.out.println("执行了Post1的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "post1的方法的请求";
    }

    //Put的方法
    @PutMapping("/put1")
    public String put1() {
        System.out.println("执行了Put1的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "put1的方法";
    }

    //Delete的方法
    @DeleteMapping("/delete1")
    public String delete1() {
        System.out.println("执行了Delete1的方法的请求！！！！！！！！！！！！！！！！！！！！！");
        return "delete1的方法的请求";
    }

}